Geographically distributed entities, such as businesses with multiple local offices in different locations, frequently desire to maintain a logically unified proprietary network that is accessible by all of the geographically distributed entities. To accomplish this, a wide area network (WAN) may be used to link the different locations.
Information technology managers within geographically distributed entities face the conflicting requirements of keeping costs down while providing users with new and faster applications. This conflict is most acute on the WAN, where costs can be high and getting applications to perform well is often hampered by limited bandwidth and high latency.
Products exist to help improve performance over the WAN portion of a network. These products may be based on a number of technologies, including data compression, data prefetching and caching, application-specific acceleration, and policy-based bandwidth allocation.
One such product is referred to as a WAN accelerator. WAN accelerators are typically installed by administrators at static locations (e.g., between a branch office and main office, such as one in the branch office and one in the main office). For example, the main office WAN accelerator may be connected to multiple branch office WAN accelerators, or a branch office WAN accelerator may also be connected to various other offices via their counterpart WAN accelerators. Multiple Transmission Control Protocol (TCP) connections are made via the WAN accelerators to carry TCP traffic originating between many endpoints within the network of one office to endpoints in the network of another office.
TCP uses an end-to-end flow control technique to avoid having a TCP sender send data too fast for the TCP receiver to reliably receive and process the data. This flow control technique takes the form of a sliding window. There are two forms of windows: a congestion window and an advertised window. The congestion window is used for flow control imposed by the sender, while the advertised window is for flow control imposed by the receiver.
A current technique used to adjust the window size is called the slow start algorithm. According to the slow start algorithm, when a new TCP connection is established, the sender sets the window size to a small size, such as one segment (where a segment may be set by the receiver or set equal to a default value, such as 536 or 512 bytes). The sender then starts by transmitting one segment to the receiver and waiting for an acknowledgement. When the sender receives the acknowledgement, the sender increments the window size from one segment to two segments. The sender then transmits two segments to the receiver and waits for acknowledgements. When each of these two segments is acknowledged, the sender increases the window size to four segments.
This process of exponential growth in the window size continues until congestion is detected (e.g., a timeout occurs before an acknowledgement is received, or duplicate acknowledgements are received). When congestion is detected, the sender may return the value of the window size to one segment, and begin increasing the window size as described above. Alternatively, the sender may return the value of the window size to another value (greater than one segment) and begin increasing the window size as described above. In either situation, the sender begins with a small window size (e.g., one segment).